package com.paqCliente;

import java.util.ArrayList;
import java.util.Date;
import java.util.Queue;
import java.util.Stack;

import libreria.item;

import android.widget.CompoundButton;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.ToggleButton;

public class alarma_cliente {
	// public boolean disparada;
	public String nombre;
	public boolean activa;
	public String fuenteDato1;
	public String fuenteDato2;
	public Date hora;
	item dato1;
	item dato2;
	int operador;

	public enum estados {
		disparada, revisada, cargada
	};

	public estados estado;

	public alarma_cliente() {

		// TODO Auto-generated constructor stub
	}

	public alarma_cliente(String nombre, String fdato1, String fdato2, int ope) {
		this.nombre = nombre;
		this.fuenteDato1 = fdato1;
		this.fuenteDato2 = fdato2;
		this.operador = ope;
		estado = estados.cargada;
		// TODO Auto-generated constructor stub
	}

	public void procesar() {
		if (dato1 != null && dato2 != null) {
			boolean valor = false;
			switch (operador) {

			case 1:
				valor = dato1.valor > dato2.valor;
				break;
			case 2:
				valor = dato1.valor >= dato2.valor;
				break;
			case 3:
				valor = dato1.valor < dato2.valor;
				break;
			case 4:
				valor = dato1.valor <= dato2.valor;
				break;
			case 5:
				valor = dato1.valor == dato2.valor;
				break;
			default:
				break;
			}
			// disparada = valor;
			alarma_cliente.estados estadoanterior = estado;

			if (estado == estados.cargada && valor) {
				estado = estados.disparada;
				hora = new Date();
			}
			if (estado == estados.revisada && !valor)
				estado = estados.cargada;
		}

	}

	static public void apuntarAlarmas() {

		boolean buscar = true;
		for (int i = 0; i < servidor_cliente.plcs.size(); i++) {
			plc_cliente miplc = servidor_cliente.plcs.get(i);
			for (int ii = 0; ii < miplc.ListaAlarmas.size(); ii++) {
				alarma_cliente mialarma = miplc.ListaAlarmas.get(ii);

				buscar = true;
				int cont = 0;
				while (buscar) {
					if (miplc.variables.get(cont).nombre
							.equals(mialarma.fuenteDato1)) {
						buscar = false;
						mialarma.dato1 = servidor_cliente.plcs.get(i).variables
								.get(cont);
					} else
						cont = cont + 1;
				}
				buscar = true;
				cont = 0;
				while (buscar) {
					if (miplc.variables.get(cont).nombre
							.equals(mialarma.fuenteDato2)) {
						buscar = false;
						mialarma.dato2 = servidor_cliente.plcs.get(i).variables
								.get(cont);
					} else
						cont = cont + 1;
				}

			}

		}

	}

	static public String[] rellenar_lista(plc_cliente mp) {
		String[] lista = new String[mp.ListaAlarmas.size()];
		for (int i = 0; i < mp.ListaAlarmas.size(); i++) {
			String texto;
			texto = (String) (mp.ListaAlarmas.get(i).nombre + "    ");
			texto = (String) (texto + mp.ListaAlarmas.get(i).fuenteDato1 + " ");
			String op = "";
			switch (mp.ListaAlarmas.get(i).operador) {
			case 1:
				op = (String) ">";
				break;
			case 2:
				op = (String) ">=";
				break;
			case 3:
				op = (String) "<";
				break;
			case 4:
				op = (String) "<=";
				break;
			case 5:
				op = (String) "=";
				break;
			default:
				break;
			}
			texto = (String) (texto + " " + op + " " + mp.ListaAlarmas.get(i).fuenteDato2);
			lista[i] = texto;
		}
		return lista;
	}

}